Java Virtual Machine (JVM) এর Garbage Collection একটি গুরুত্বপূর্ণ ফিচার, যা স্বয়ংক্রিয়ভাবে অব্যবহৃত অবজেক্টগুলির মেমরি মুক্ত করে। JVM এর মধ্যে বিভিন্ন ধরণের GC algorithms এবং GC tuning options আছে, যা Garbage Collection এর কার্যক্রম কাস্টমাইজ করতে সাহায্য করে।
Java এর -XX অপশনগুলো ব্যবহার করে আপনি Garbage Collection এর আচরণ কাস্টমাইজ করতে পারেন। নিচে কিছু সাধারণ Garbage Collection এর জন্য কমান্ড-লাইন অপশনসমূহ এবং তাদের ব্যাখ্যা দেয়া হয়েছে।
1. Garbage Collection Algorithm Selection Options:
- Serial Garbage Collector:
- এটি single-threaded GC, যা ছোট অ্যাপ্লিকেশনগুলির জন্য উপযুক্ত। এটি সাধারণত স্ট্যান্ডালোন অ্যাপ্লিকেশন বা একক থ্রেডেড পরিবেশে ব্যবহৃত হয়।
Option:
java -XX:+UseSerialGC -Xms512m -Xmx2g -jar your-application.jar
- Parallel Garbage Collector:
- এটি multi-threaded GC যা multiple CPUs ব্যবহার করে। এটি বৃহত্তর অ্যাপ্লিকেশন এবং মাল্টি-থ্রেডেড পরিবেশে ভাল পারফরম্যান্স দেয়।
Option:
java -XX:+UseParallelGC -Xms512m -Xmx2g -XX:+PrintGCDetails -Xloggc:gc.log -jar your-application.jar
- Concurrent Mark-Sweep (CMS) Garbage Collector:
- এটি low-latency GC এবং আপনার অ্যাপ্লিকেশনের থ্রেডকে সচল রেখে mark এবং sweep অপারেশন চালাতে সাহায্য করে।
Option:
java -XX:+UseConcMarkSweepGC -Xms512m -Xmx2g -XX:+PrintGCDetails -Xloggc:gc.log -jar your-application.jar
- G1 Garbage Collector:
- G1 GC হল একটি আধুনিক এবং কার্যকরী garbage collector যা large heaps এবং low-latency অ্যাপ্লিকেশনের জন্য ডিজাইন করা হয়েছে।
- এটি garbage collection pauses কমানোর চেষ্টা করে এবং বড় heap সাইজগুলি খুব ভালভাবে পরিচালনা করতে সক্ষম।
Option:
java -XX:+UseG1GC -Xms512m -Xmx2g -XX:+PrintGCDetails -Xloggc:gc.log -jar your-application.jar
- Z Garbage Collector (ZGC):
- ZGC হল একটি low-latency garbage collector যা large heaps এবং real-time performance প্রয়োজনীয় অ্যাপ্লিকেশনের জন্য ব্যবহার করা হয়।
Option:
java -XX:+UseZGC -Xms512m -Xmx2g -jar your-application.jar
- Shenandoah Garbage Collector:
- Shenandoah GC হল একটি low-latency collector যা large heap ব্যবস্থাপনা এবং concurrent garbage collection এর সুবিধা প্রদান করে।
Option:
java -XX:+UseShenandoahGC -Xms512m -Xmx2g -XX:+PrintGCDetails -Xloggc:gc.log -jar your-application.jar
2. Garbage Collection Tuning Options:
- Initial and Maximum Heap Size:
- Heap size কাস্টমাইজ করার জন্য
-Xms(initial heap size) এবং-Xmx(maximum heap size) অপশন ব্যবহার করা হয়। Option:
java -Xms512m -Xmx2g -jar your-application.jar
- Heap size কাস্টমাইজ করার জন্য
- Setting Young Generation Size:
-XX:NewSizeএবং-XX:MaxNewSizeঅপশন ব্যবহার করে আপনি young generation এর সাইজ কাস্টমাইজ করতে পারেন।Option:
java -XX:NewSize=256m -XX:MaxNewSize=1g -jar your-application.jar
- Garbage Collection Log Settings:
- GC log গুলি মনিটর করার জন্য আপনাকে
-Xloggcঅপশন ব্যবহার করতে হবে। এটি GC এর বিস্তারিত লগ তৈরি করবে। Option:
java -Xms512m -Xmx2g -XX:+PrintGCDetails -Xloggc:gc.log -jar your-application.jar
- GC log গুলি মনিটর করার জন্য আপনাকে
- Enable GC Pauses Monitoring:
-XX:+PrintGCDetailsএবং-XX:+PrintGCDateStampsঅপশনগুলি GC এর প্রতি একটি স্ট্যাম্প সহ তথ্য প্রিন্ট করবে, যা আপনাকে GC pause time এবং তারিখ বিশ্লেষণ করতে সাহায্য করবে।Option:
java -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:gc.log -jar your-application.jar
- Full GC (Explicit):
- Full GC trigger করার জন্য
-XX:+ExplicitGCInvokesConcurrentঅপশন ব্যবহার করা হয়। এটি যখন JVM এর মধ্যে explicit garbage collection trigger হয়, তখন এটি concurrent GC প্রক্রিয়া শুরু করবে। Option:
java -XX:+ExplicitGCInvokesConcurrent -jar your-application.jar
- Full GC trigger করার জন্য
- Disable Parallelism:
-XX:+DisableExplicitGCব্যবহার করলে আপনি explicit GC নিষ্ক্রিয় করতে পারবেন, যা ভারী ব্যবহারকারী অ্যাপ্লিকেশনগুলিতে কার্যকরী হতে পারে।Option:
java -XX:+DisableExplicitGC -jar your-application.jar
- GC Pause Time Goal:
-XX:MaxGCPauseMillisঅপশন ব্যবহার করলে GC pause time-কে নির্দিষ্ট মানে সীমাবদ্ধ করা যাবে।Option:
java -XX:MaxGCPauseMillis=200 -Xms512m -Xmx2g -jar your-application.jar
3. Monitoring and Diagnosing GC Behavior:
- Heap Dump on OutOfMemoryError:
- JVM যদি
OutOfMemoryErrorফেলে, তখন heap dump তৈরি করতে-XX:+HeapDumpOnOutOfMemoryErrorব্যবহার করা যায়। Option:
java -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=heapdump.hprof -jar your-application.jar
- JVM যদি
- Verbose GC:
- Verbose GC অপশনটি জাভার GC সম্পর্কে বিস্তারিত তথ্য প্রদান করে। এটি সাধারণত garbage collection এর সময়, মেমরি ব্যবহার এবং প্রক্রিয়া সম্পর্কে ধারণা দেয়।
Option:
java -verbose:gc -jar your-application.jar
- Memory Management Logs:
- GC logs এবং heap dumps এর বিশ্লেষণ করার মাধ্যমে আপনি সহজেই মেমরি ব্যবস্থাপনার সমস্যা চিহ্নিত করতে পারেন।
Option:
java -Xms512m -Xmx2g -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:gc.log -jar your-application.jar
Garbage Collection (GC) এবং মেমরি ব্যবস্থাপনা Java অ্যাপ্লিকেশনের পারফরম্যান্সের জন্য অত্যন্ত গুরুত্বপূর্ণ। JVM এর GC algorithms এবং tuning options ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনের memory management, performance, এবং garbage collection pauses-এর কার্যকারিতা মনিটর এবং অপ্টিমাইজ করতে পারেন। উপরোক্ত কমান্ড-লাইন অপশনগুলো ব্যবহার করে আপনি Java অ্যাপ্লিকেশনটির Garbage Collection কার্যক্রম কাস্টমাইজ করতে পারবেন এবং JVM performance tuning-এ সহায়ক হতে পারে।
Read more